//大致思想：遍历数组用对象存储出现次数，再利用此对象生成一个二维数组，将二维数组进行排序，再利用滑动窗口
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
let flag = -1
let t = null;
let readflag = false
let n = null;
let k = null;
let arr = null;
rl.on('line', function (line) {
  if (flag == -1) {
    t = parseInt(line); // 读出这个数字 表示出现的次数
    flag = 1
  } else {
    if (!readflag) {
      [n, k] = line.split(' ').map(item => parseInt(item)) // 读出n和k
      readflag = true
    } else {
      readflag = false
      arr = line.split(' ').map(item => parseInt(item)); // 读出数组
      let need = {}; // 需要的 key是数组的值 valu是次数
      for (let i = 0; i < n; i++) {
        need[arr[i]] === undefined ? need[arr[i]] = 1 : need[arr[i]]++
      }
      let fuzhuArr = [] // 辅助数组
      let keys = Object.keys(need) // 所有的个数
      for (let key of keys) { // 遍历每一项
        fuzhuArr.push([parseInt(key), parseInt(need[key])]) // 放入辅助数组中 出现的次数
      }
      fuzhuArr.sort((a, b) => a[0] - b[0]); // 对出现的次数进行排序
      let left = 0; // 左边界
      let len = fuzhuArr.length; // 右边界
      let result = false;// 结果标签
      let sum = 0;
      for (let right = 0; right < len; right++) { // 右边界进行遍历
        sum += fuzhuArr[right][1]; // 出现的次数
        while (sum > k) { // 当出现的次数大于k的时候
          left++; // 左边界缩小
          sum -= fuzhuArr[left][1]; // 个数-去出现的个数
        }
        if (sum == k) { //
          result = true;
          console.log([fuzhuArr[left][0], fuzhuArr[right][0]].join(' '));
          break;
        }
      }
      if (!result) {
        console.log(-1)
      }
    }
  }
});